package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.yunke.common.base.YunkeBaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;

/**
 * 提现申请实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dzwithdrawal")
@Schema(description = "提现申请")
public class YunkeWithdrawal extends YunkeBaseEntity {

    /**
     * 提现申请ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @Schema(description = "提现申请ID")
    private Long id;

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private Long userId;

    /**
     * 提现单号
     */
    @Schema(description = "提现单号")
    private String withdrawalNo;

    /**
     * 提现金额
     */
    @Schema(description = "提现金额")
    private BigDecimal amount;

    /**
     * 手续费
     */
    @Schema(description = "手续费")
    private BigDecimal fee;

    /**
     * 实际到账金额
     */
    @Schema(description = "实际到账金额")
    private BigDecimal arrivalAmount;

    /**
     * 提现方式：1-微信 2-支付宝 3-银行卡
     */
    @Schema(description = "提现方式：1-微信 2-支付宝 3-银行卡")
    private Integer withdrawalType;

    /**
     * 收款账户
     */
    @Schema(description = "收款账户")
    private String account;

    /**
     * 收款人姓名
     */
    @Schema(description = "收款人姓名")
    private String accountName;

    /**
     * 银行名称（银行卡提现时使用）
     */
    @Schema(description = "银行名称")
    private String bankName;

    /**
     * 银行卡号（银行卡提现时使用）
     */
    @Schema(description = "银行卡号")
    private String bankCard;

    /**
     * 审核状态：0-待审核 1-审核通过 2-审核拒绝
     */
    @Schema(description = "审核状态：0-待审核 1-审核通过 2-审核拒绝")
    private Integer auditStatus;

    /**
     * 打款状态：0-未打款 1-已打款 2-打款失败
     */
    @Schema(description = "打款状态：0-未打款 1-已打款 2-打款失败")
    private Integer payStatus;

    /**
     * 审核人ID
     */
    @Schema(description = "审核人ID")
    private Long auditBy;

    /**
     * 审核时间
     */
    @Schema(description = "审核时间")
    private Long auditTime;

    /**
     * 打款时间
     */
    @Schema(description = "打款时间")
    private Long payTime;

    /**
     * 审核备注
     */
    @Schema(description = "审核备注")
    private String auditRemark;

    /**
     * 第三方交易号
     */
    @Schema(description = "第三方交易号")
    private String thirdTradeNo;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;
} 